﻿using CAD;
using CAD.WFL;
using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NEGOCIOS.COMPONENTES
{
    public class CMensajesServidor
    {
        ILog logger = LogManager.GetLogger(typeof(CMensajesServidor));     

        private List<Message> proxy;
 

        public CMensajesServidor()
        {
        }
        public CMensajesServidor(List<Message> proxy)
        {
            this.proxy = proxy;
        }
     
        public int Insertar()
        {
            DTOMensaje maestro = new DTOMensaje();
            List<DTOMensajexUsuario> lista = new List<DTOMensajexUsuario>();
            foreach (Message mensaje in proxy)
            {
                CuerpoMessage cuerpo = mensaje.CuerpoMensaje1 ;
                maestro.Asunto=cuerpo.AsuntoMensaje1;
                maestro.Contenido=cuerpo.TextMensaje1;

                CabeceraMessage cabecera=mensaje.CabeceraMensaje1;
                DTOMensajexUsuario temp = new DTOMensajexUsuario();
                temp.IDEmisor = cabecera.Sender;
                temp.IDReceptor = cabecera.Destinatario;
                temp.Estado = true;
                lista.Add(temp);
            }
            logger.Info("Se inserto el mensaje para cada usuario");
            return WFLMensaje.Instance().InsertarMensajes(maestro, lista);
        }
        public int Eliminar()
        {
           List<DTOMensajexUsuario> lista = new List<DTOMensajexUsuario>();
            foreach (Message mensaje in proxy)
            {
                DTOMensajexUsuario temp = new DTOMensajexUsuario();
                CabeceraMessage cabecera = mensaje.CabeceraMensaje1;
                temp.IDMensaje1.IDMensaje = mensaje.Idmensaje;
                temp.IDEmisor = cabecera.Sender;
                temp.IDReceptor = cabecera.Destinatario;
                lista.Add(temp);
            }
            return WFLMensaje.Instance().EliminarMensajes(lista);
        }
        public void ActulizarEstadoCorreo(Message mensaje)
        {
            DTOMensajexUsuario proxy = new DTOMensajexUsuario();
            CabeceraMessage cabecera = mensaje.CabeceraMensaje1;
            proxy.IDMensaje1.IDMensaje = mensaje.Idmensaje;
            proxy.IDEmisor = cabecera.Sender;
            proxy.IDReceptor = cabecera.Destinatario;
            DTOMensajexUsuario temp = new DTOMensajexUsuario();
            DAOMensajexUsuario.Instance().ActualizarEstado(proxy);
            logger.Info("Se actualizo el estado de correo");
        }


        public List<Message> SelectClientes(string usuario)
        {
            return Cargar(DAOMensajexUsuario.Instance().SelectPorUsuario(usuario));
        }

        private Message Cargar(DTOMensajexUsuario item)
        {
            CabeceraMessage cabesa= new CabeceraMessage(item.IDEmisor,item.IDReceptor);
            CuerpoMessage cuerpo= new CuerpoMessage(item.IDMensaje1.Asunto,item.IDMensaje1.Contenido);
            Message temp = new Message(item.IDMensaje1.IDMensaje, cuerpo, cabesa, item.Estado);
            logger.Info("Se cargaron los mensajes por usuario");
            return temp;
        }

        private List<Message> Cargar(List<DTOMensajexUsuario> items)
        {
            List<Message> list = new List<Message>();
            foreach (DTOMensajexUsuario item in items)
            {
                list.Add(Cargar(item));
                logger.Info("se añadieron los mensajes por usuario");
            }
            return list;
        }
    }
}
